package com.zdpx.pxframework.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zdpx.pxframework.system.entity.MenuInfo;
import com.zdpx.pxframework.system.vo.vo.MenuInfoTreeVo;

import java.util.List;
import java.util.Set;


/**
 * 菜单 服务类
 *
 * @Description:
 * @Author: Cheng XiaoXiao
 * @Date: 2022-02-27 15:20:14
 */
public interface MenuInfoService extends IService<MenuInfo> {
    /**
     * 获取菜单详情
     *
     * @param id ID
     * @return 单个菜单详情
     */
    MenuInfo detailById(String id);

    /**
     * 增加菜单信息
     *
     * @param menuInfo 菜单信息
     */
    void saveMenuInfo(MenuInfo menuInfo);

    /**
     * 修改菜单信息
     *
     * @param menuInfo 菜单对象
     */
    void updateMenuInfoById(MenuInfo menuInfo);

    /**
     * 根据ID删除信息
     *
     * @param id ID
     */
    void deleteById(String id);

    /**
     * 查询菜单树形结构
     *
     * @return 菜单树形结构
     */
    List<MenuInfoTreeVo> tree();

    /**
     * 根据菜单标识获取菜单信息
     *
     * @param menuKey 菜单标识
     * @return 菜单信息
     */
    MenuInfo getOneByMenuKey(String menuKey);

    /**
     * 根据用户ID获取菜单标识列表
     *
     * @param userId 用户ID
     * @return 菜单标识列表
     */
    Set<String> getMenuKeysByUserId(String userId);
}
